#ifndef LILY_MODULES_H
#define LILY_MODULES_H

#ifndef new_cmd
#define new_cmd(name, callback)
// e.g. new_cmd(help, cmd_help);
#endif
#ifndef new_cmd2
#define new_cmd2(name, callback, help_doc)
// e.g. new_cmd2(help, cmd_help, "helpDoc\nhelp [cmdList]");
#endif
#ifndef new_cmd3
#define new_cmd3(name, callback, help_doc_var)
// e.g. new_cmd3(help, cmd_help, help_doc_var);
#endif
#ifndef new_var
#define new_var(name, ref, type)
// e.g. new_var(a, __a, 'i');
// type should be only among in int, float, char and str
#endif
#ifndef event
#define event(e)
// to create a new event
// e.g. event(memReduction);
#endif
#ifndef load
#define load(mod)
#endif
/* enter you private cmd and module here */

event(memReduction);

new_cmd2(help, cmd_help, "helpDoc\nhelp [cmdList]");
new_cmd2(delete, cmd_delete, "deleteField\ndelete [varList]");
new_cmd2(free, cmd_reduction_memory, "free unused space\nfree [v]");
new_cmd2(whos, cmd_whos, "listFields\nwhos [varList]");

load(controlSentences);
load(lily_timer);
load(pipe);
// load(sch);
load(signal);
load(utility);

#endif // !LILY_MODULES_H